<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //1.请写出两种将Javascript应用到网页的方式
       /* 嵌入式：写在html的<script>标签中；
          引入式：写在外部js文件中，在页面引入
       */

       //2.如何定义一个变量？变量的命名规则有哪些？
       /* 定义变量的格式：
          var  变量名;
          var  变量名=初始值;  
          命名规则：
          1、变量命名必须以字母、下划线”_”或者”$”为开头。其他字符可以是字母、_、美元符号或数字。
          2、变量名中不允许使用空格和其他标点符号，首个字不能为数字。
          3、变量名长度不能超过255个字符。
          4、变量名区分大小写。(javascript是区分大小写的语言)
          5、变量名必须放在同一行中
          6、不能使用脚本语言中保留的关键字、保留字、true、false 和 null 作为标识符。
       */

       //3.==和===的区别
       /* ==：相等符，只判断值大小是否相等，不判断数据类型
          ===：全等符，不光判断值相等，并且判断数据类型是否相等，只有值与数据类型都相等才返回true
       */

        //4.JS的简单数据类型有哪些并简单描述
        /* Number:数字类型，不区分整数、浮点数、特殊值，都是Number类型；
        String：字符串类型，所有的字符串都是string类型
        undefined：本身是一个数据，表示未定义
        Boolean：只有true和false两个字面量，必须是小写字母，ture为1,false为0
        null：本身是一个数据，表示一个空对象指针；如果定义的变量准备在将来用于保存对象，最好将该变量初始化为null
       */

       //5.JS的算数运算符有哪些？
      /*  + - * / % ()
       */

       //6.JS的比较运算符有哪些？
      /* > 大于
         < 小于
         >= 大于等于
         <= 小于等于
         == 相等，只判断值大小是否相等，不判断数据类型 
         != 不等，与相等完全相反
         === 全等，不光判断值相等，还要判断数据类型相等 
         !== 不全等，与全等于完全相反
       */
       
      //7.JS的逻辑运算符有哪些？
        /* && 逻辑与运算符 且 
           || 逻辑或运算符
           ! 逻辑非运算符
       */

       //8.var i = 100; i++; j = i++;y = ++j;请问j和y分别是多少？
        /* j=101
           y=102
       */

      //9.计算下列算式，并将结果输出：
        /* var num = 324 * (23+214) / (568-129) - 11 * (235-24);
    alert(num);
       */

      //10.住房公积金缴纳金额与工资两者的关系是：住房公积金 = 税前工资 * 0.1 * 2 ;编写程序，让用户输入税前工资，弹出对应的公积金数额。
       /*  var num = parseFloat(prompt("请输入税前工资"));
           var gongjijin = num * 0.1 * 2
           alert("公积金数额：" + gongjijin);
       */

       //11.用JS计算下列算式，并将结果在弹出：
        /*  var num = Math.pow((23 + Math.pow(5,7)) / 45,2);
    console.log(num);
       */

      //12.编写程序，提示用户输入圆锥的底面半径和高，然后弹出它的体积，计算圆锥体积的公式是：体积V=1/3π半径2*高
      /*   var r = parseFloat(prompt("请输入半径"));
           var h = parseFloat(prompt("请输入高度"));
           alert('圆锥体积为:' + 1/3 * Math.PI * r * r * h);
       */

       //13.如果今天是星期二，那么1000天后是星期几？用户输入一个天数，计算这个天数后是星期几。
       /* var tian = parseInt(prompt('请输入天数',1000));
     switch ((tian + 2) % 7){
     case 1:
     alert('今日星期二' + tian + '天后是星期一' );
     break;
     case 2:
     alert('今日星期二' + tian + '天后是星期二' );
     break;
     case 3:
     alert('今日星期二' + tian + '天后是星期三' );
     break;
     case 4:
     alert('今日星期二' + tian + '天后是星期四' );
     break;
     case 5:
     alert('今日星期二' + tian + '天后是星期五' );
     break;
     case 6:
     alert('今日星期二' + tian + '天后是星期六' );
     break;
     case 0:
     alert('今日星期二' + tian + '天后是星期日' );
     break;
     }
       */

      //14.用户输入一个三位数，弹出各个数位的和。比如：用户输入155，就弹出11；用户输入316，就弹出10；用户输入989，就弹出26；用户输入678，就弹出21
      /* var num = prompt("请输入一个三位数数字");
         var a = num % 10;
         var b = parseInt((num % 100) / 10);
         var c = parseInt(num / 100);
         var sum = a + b + c;
         alert("你输入的三位数数字是" + num + ",位数相加得"+sum);
      */

      //15.用户输入一个数字，然后判断这个数字能否被5、6整除的情况，根据情况弹出下面4种警告框：
      /*var num = parseInt(prompt('请输入一个数字'));
      if(num % 5 == 0 && num % 6 ==0){
      alert('这个数字能同时被5和6整除');
    }else if(num % 5 == 0){
      alert('这个数能被5整除，但是不能被6整除');
    }else if(num % 6 == 0){
      alert('这个数能被6整除，但是不能被5整除');
    }else{
      alert('这个数不能被5整除，也不能被6整除');
    }
      */

      //16.用户输入一个数字，然后再输入一个数字。然后弹出警告框：
      /*var oneNum = parseInt(prompt('请输入第一个数'));
       var twoNum = parseInt(prompt('请输入第二个数'));
      if( (oneNum + twoNum) % 2 == 0){
      alert('这个两个数字奇偶性相同');
      }else{
      alert('这个两个数字奇偶性不同');
    }
      */

      //17.用户输入一个年份，判断这个年是否是闰年。
      /* var year = parseInt(prompt('请输入年份'));
    if( year % 4  == 0 && year % 100 != 0 || year % 400 == 0){
      alert('闰年');
    } else {
      alert('不是闰年');
    }
      */

      // 18.推导循环执行的顺序，用文字进行说明，并推导出可能的结果。
      /*m=1,n=2;开始循环：n += 3赋值为5,输出m为1,
        m=2,n=5,m+n<25,输出m为2
        m=3,n=8,m+n<25,输出m为3
        m=4,n=11,m+n<25,输出m为4
        m=5,n=14,m+n<25,输出m为5
        m=6,n=17,m+n<25,输出m为6
        直到第七次循环m+n<25不成立
      */

      //19.推导循环执行的顺序，用文字进行说明，并推导出可能的结果。
      /*第一次循环 i=30 输出30
        第二次循环 i=30-7-1=22 输出22
        第三次循环 i=22-7-1=14 输出14
        第四次循环 i=14-7-1=6 输出6
        第五次循环不满足i>5
        因此可能的结果为：30、22、14和6
      */

      //20.用户输入一个数字n，计算1+2+3+4+……n的和。
      /* var n = parseInt(prompt('请输入一个正整数'));
         var sum=0;
         for(var i=1; i<=n; i++){
         sum += i;
         }
         alert(sum);*/

      //21.用户输入一个整数n，计算n的阶乘。即n*(n-1)*(n-2)*……*3*2*1.
      /* var n = parseInt(prompt('请输入一个正整数'));
         var ride = 1;
         for(var i=n; i>0;i--){
         ride *= i
          }
         alert(ride);
      */

      //22.   用户输入一个数字n,计算
      /*var n = parseInt(prompt('请输入一个数'));
        var sum = 0;
        for(var a=2;a<=n;a++){
        sum += (a+1) / a
        }
        alert(sum);
      */

       //23.用户输入一个数字，在控制台中列出它的所有约数。
      /*var n = parseInt(prompt("求该数的约数"));
      for(var i = 1 ; i <= n ;i++){
      if(n % i == 0){
        console.log(i);
      }
    }
      */
      //24.   水仙花数是一种特殊的四位数，它的特点就是，每个数位的四次方和，等于它本身。请编程找出来。
    /*
    var ge = 0;
    var shi = 0;
    var bai = 0; 
    var qian = 0; 
    for(var i = 1000; i <= 9999; i++ )
    {
      ge = i % 10;
      shi = parseInt(i / 10) % 10;
      bai = parseInt(i / 100) % 10;
      qian = parseInt(i / 1000);
      if(Math.pow(ge, 4) + Math.pow(shi, 4) + Math.pow(bai, 4) + Math.pow(qian, 4) == i){
        console.log(i);
      }
    }
    */

    //25.如果一个数恰好等于它的约数之和，则称该数为“完美数”。试寻找1~10000之间的所有完美数。
    /*for(var i = 1; i <= 10000; i++){
      var sum = 0;
      for(var y = 1; y < i; y++){
        if(i % y == 0){
          sum += y;
        }
      }
	    if(sum == i){
		    console.log(i);
	    }
    }
    */
    //26.   用户输入一个数字，判断这个数字是否是质数。质数就是指它的约数只有1和它本身。看约数个数是否是2.
    /*
      var num = parseInt(prompt('请输入一个大于1的数字'));
      var flag = true;
      for (var i = 2; i < num; i++) {
        if (num % i == 0) {
          flag = false;
          break;
        }
      }
      if(flag){
        alert(num + '是质数');
      }else{
        alert(num + '不是质数');
      }
    */

    //27.列出1~10000的所有质数。
    /* waiceng:for(var i=1; i<=10000;i++){
      for(var j=2;j<i;j++){
        if(i % j === 0)
         continue waiceng;
      }
        console.log(i);
    }
    */

    //28.苹果3元一个，鸭梨2元一个，桃子1元一个。现在想用200元正好买100个水果，在控制台中列出所有可能性。
    /*for(var i=0;i<=50;i++){
      var j = 100 - 2 * i
      var k = i
      console.log(i,j,k );
    }
    */

    //29. 使用if实现switch效果
    /* var name = prompt('');
    if(name == "jt"){
      alert('金团网');
    }else if(name == 'ejt'){
      alert('金团相相贷');
    }else if(name == 'ejin'){
      alert("网上综合金融体验馆");
    }else{
      alert("金团网络典当");
    }
    */

    //30.JS有几种循环，分别是什么?
    /*
    for 循环:是一种前测试循环语句，在反复执行一段代码之前，都要先测试入口条件，如果条件为真，可以继续循环，如果条件为假，必须跳出循环不再执行。
    do while 循环:是一种后测试循环语句，会先执行一次结构体，执行完后才会去判断入口条件，如果条件为真能够继续下一次循环，如果条件为假跳出循环。
    while 循环:是一种前测试循环语句，在执行循环体之前都要测试入口条件，条件为真继续执行，条件为假直接跳出循环。
    */
    //31.break和continue的区别是什么?
    /*
    break：立即停止，跳出循环（break 如果没有特殊指示，只能停止自己所在的那一层循环，并不能终止外部循环；
   如果想停止外层循环，可以给外层循环添加一个标签名 label，在内层循环的 break 关键字后面空格加一个 label 名。
   ）
    continue：停止当前次的循环，立即进入下一次循环。 
    */

    //32.请用循环计算出 1+2+3+4+5+...+100 的值
    /*
    var sum = 0;
    for(var i=0; i<=100;i++){
      sum += i;
    }
    alert(sum);
    */

    //33.开发一款软件，根据公式（身高-108）*2=体重，可以有10斤左右的浮动。判断测试者体重为标准体重还是超重还是偏瘦
    /* var tizhong = parseFloat(prompt('请输入你的体重'));
    var shengao = parseFloat(prompt('请输入你的身高'));
    var index = tizhong - (shengao - 108) * 2;
    if(index > 10){
      alert('超重');
    }else if(index < -10){
      alert('偏瘦');
    }else{
      alert('正常');
    }
    */
    //34.将上述代码使用switch写法的另一种方式实现，以及使用if判断实现一次
    /*
    var grade = prompt("请输入分数");
    switch (true){
      case grade >= 9:
      alert("你的成绩是优秀");
      break;
      case grade >= 6:
      alert("你的成绩是良好");
      break;
      default:
      alert("你的成绩是不合格，继续加油哦");
      }
    */

    //35.输入月份，显示当月天数（输入2月时需要再次输入年份判断是不是闰年后在显示当月天数）
    /*
    var month = parseInt(prompt('请输入月份'));
    switch (month) {
      case 1:
      case 3:
      case 5:
      case 7:
      case 8:
      case 10:
      case 12:
        alert(year + '年的' + month + "月有31天");
        break;

      case 2:
        var year = parseInt(prompt('请输入年份'));
        if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
          alert(year + '年的' + month + "月有29天");
        } else {
          alert(year + '年的' + month + "月有28天");
        }
        break;
        default:
         alert(year + '年的' + month + "月有30天");
        break;
    }
    */
    
    </script>
</head>
<body>
    
</body>
</html>